package com.qiyun.duijiang.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class Butil {

    private static ArrayList<Integer> tmpArr = new ArrayList<Integer>();
    private static ArrayList<ArrayList> tmpsArr = new ArrayList<>();
    /**
     * 组合
     * 按一定的顺序取出元素，就是组合,元素个数[C arr.len 3]
     * @param index 元素位置
     * @param k 选取的元素个数
     * @param arr 数组
     */
    public static void combine(int index,int k,Integer[] arr) {
        if(k == 1){
            for (int i = index; i < arr.length; i++) {
                tmpArr.add(arr[i]);
                ArrayList<Integer> brr = new ArrayList();
                brr.addAll(tmpArr);
                tmpsArr.add(brr);
                tmpArr.remove(arr[i]);
            }
        }else if(k > 1){
            for (int i = index; i <= arr.length - k; i++) {
                tmpArr.add(arr[i]); //tmpArr都是临时性存储一下
                combine(i + 1,k - 1, arr); //索引右移，内部循环，自然排除已经选择的元素
                tmpArr.remove(arr[i]); //tmpArr因为是临时存储的，上一个组合找出后就该释放空间，存储下一个元素继续拼接组合了
            }
        }else {
            return ;
        }
    }

    public static void main(String[] args) {
        Integer[] arr = {0,1,2,3,4,5,6,7};
        String[] srr ={"310","30","3","3","3","3","3","3"};
        combine(0,5,arr);
        System.out.println(tmpsArr);
        System.out.println(tmpsArr.size());
        int num = 0;
        for(int i=0; i<tmpsArr.size();i++){
            int numb = 0;
            for(int j=0; j<tmpsArr.get(i).size();j++){
                if(j==0){
                    int q = (int) tmpsArr.get(i).get(j);
                    numb = srr[q].length();
                }else {
                    int q = (int) tmpsArr.get(i).get(j);
                    numb = numb*srr[q].length();
                }
            }
            num = num + numb;
        }
        System.out.println("num="+num);
    }
}
